#include <Python.h>

static PyObject *py_add(PyObject *self, PyObject *args) {
  int a, b;
  if (!PyArg_ParseTuple(args, "ii", &a, &b)) {
    return NULL;
  }
  printf("rand %d\n", a + rand() % (b - a));
  return PyLong_FromLong(a + b);
}

// 定义模块的方法
static PyMethodDef MathMethods[] = {{"add", py_add, METH_VARARGS, "add two"},
                                    {NULL, NULL, 0, NULL}};

// 模块定义
static struct PyModuleDef cmath_module = {
    PyModuleDef_HEAD_INIT,
    "cmath", // 模块名
    NULL,    // 模块文档，NULL表示没有文档
    -1,      // 模块保持状态，-1表示模块是全局的
    MathMethods};

// 初始化函数
PyMODINIT_FUNC PyInit_cmath(void) { return PyModule_Create(&cmath_module); }